package com.theatre.userservice.model.vo.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

public class FileUploadUtil {

    /**
     * 保存文件并返回相对访问路径
     */
    public static String saveFile(MultipartFile file, String basePath, String subDir) throws IOException {
        if (file == null || file.isEmpty()) {
            throw new IllegalArgumentException("上传文件为空");
        }

        // 生成唯一文件名
        String originalName = file.getOriginalFilename();
        String ext = "";
        if (originalName != null && originalName.contains(".")) {
            ext = originalName.substring(originalName.lastIndexOf("."));
        }
        String fileName = System.currentTimeMillis() + "_" + UUID.randomUUID() + ext;

        // 构建完整保存路径（自动识别系统分隔符）
        File uploadRoot = new File(System.getProperty("user.dir"), basePath); // jar 所在目录下
        File targetDir = new File(uploadRoot, subDir);
        if (!targetDir.exists()) {
            targetDir.mkdirs(); // ✅ 自动创建目录
        }

        // 保存文件
        File targetFile = new File(targetDir, fileName);
        file.transferTo(targetFile);

        // 返回可访问的相对路径
        return "/uploads/" + subDir + "/" + fileName;
    }
}
